﻿#light

(* An example implementation of mutating state instead of passing it *)

open Turtle
open FsxUnit.Syntax

let mutable turtle = new Turtle()

let ATurtle () = turtle <- new Turtle()    // Just for language flowness

//MoveTurtle
let MovesOneStepForward () = turtle.Go()
let IsMovedOneStepForward () = turtle.Position.X |> should equal 1
let RotationIs angle () = turtle.Direction |> should equal 0.0


//MoveTurtleToPosition
let IsRotated90DegreesToTheRight () = turtle.Left()
let TurtleWalksSteps steps () = turtle.GoSteps(steps)
let TurtleIsLocatedAt (x,y) () = turtle.Position |> should equal (new Position(x,y))


//NotFullyImplementedStory
let SomethingElse = id
let SomethingHappens = id
let SomethingHappened = id
let WeCanSupplyArgumentsAsWell arg = id


//MoveTurtleToPositionParameterInNameHack
let Steps = id
let TurtleWalks steps _ () = turtle.GoSteps(steps)
